Skill Development

Ajax এর বেসিক কাজের প্রক্রিয়া (How Ajax Works)

Please, contribute to add content into Ajax এর বেসিক কাজের প্রক্রিয়া (How Ajax Works).
Content

Ajax এর কাজের বেসিক ধাপ

Ajax এর কাজের বেসিক ধাপগুলো নিম্নে ধারাবাহিকভাবে ব্যাখ্যা করা হলো। এই ধাপগুলো অনুসরণ করে Ajax এর মাধ্যমে সার্ভারের সাথে ডেটা আদান-প্রদান করা হয় এবং ডায়নামিকভাবে ওয়েব পেজ আপডেট করা যায়:

Ajax এর কাজের বেসিক ধাপ:

১. XMLHttpRequest অবজেক্ট তৈরি করা:

Ajax এর মাধ্যমে সার্ভারের সাথে যোগাযোগ করার জন্য প্রথমে JavaScript এর XMLHttpRequest অবজেক্ট তৈরি করতে হয়। এটি Ajax রিকোয়েস্ট তৈরি ও ম্যানেজ করার জন্য ব্যবহৃত হয়।

var xhr = new XMLHttpRequest();

২. রিকোয়েস্ট টাইপ এবং ইউআরএল নির্ধারণ করা:

XMLHttpRequest অবজেক্ট তৈরি করার পরে, আমরা open() মেথড ব্যবহার করে রিকোয়েস্টের টাইপ (GET বা POST) এবং সার্ভারের URL নির্ধারণ করি। এটি জানায় যে, কোন URL থেকে ডেটা আনা বা কোন URL-এ ডেটা পাঠানো হবে।

xhr.open("GET", "data-url.json", true);
  • "GET" বা "POST": HTTP রিকোয়েস্টের টাইপ।
  • "data-url.json": সার্ভারের URL (যেখান থেকে ডেটা আনা হবে)।
  • true: এটি নির্দেশ করে যে রিকোয়েস্টটি অ্যাসিনক্রোনাস (অ্যাসিনক) হবে।

৩. রিকোয়েস্ট পাঠানো:

রিকোয়েস্টের সেটআপ করার পরে, send() মেথড ব্যবহার করে রিকোয়েস্টটি সার্ভারে পাঠানো হয়। যদি এটি POST রিকোয়েস্ট হয়, তবে send() মেথডে ডেটা প্যারামিটার হিসেবে পাঠানো হয়।

xhr.send();

৪. সার্ভার রেসপন্স প্রসেস করা:

সার্ভার থেকে রেসপন্স পাওয়ার পরে, onreadystatechange ইভেন্ট হ্যান্ডলার ব্যবহার করে সেই রেসপন্স হ্যান্ডেল করা হয়। আমরা চেক করি যে রিকোয়েস্টের রেডি স্টেট এবং HTTP স্ট্যাটাস কোড ঠিক আছে কিনা (রেডি স্টেট ৪ এবং স্ট্যাটাস ২০০ হওয়া প্রয়োজন)।

xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        // রেসপন্স ডেটা প্রসেস করা
        var data = JSON.parse(xhr.responseText);
        console.log(data);
    }
};
  • readyState:
    • 0: রিকোয়েস্ট তৈরি হয়নি।
    • 1: রিকোয়েস্ট সেটআপ হয়েছে (open() কল হয়েছে)।
    • 2: রিকোয়েস্ট সার্ভারে পাঠানো হয়েছে।
    • 3: রিকোয়েস্ট প্রসেসিং চলছে।
    • 4: রিকোয়েস্ট সম্পূর্ণ এবং রেসপন্স রেডি।
  • status: সার্ভারের HTTP রেসপন্স স্ট্যাটাস কোড (২০০ মানে সফল)।

৫. DOM আপডেট করা:

সার্ভার থেকে ডেটা পাওয়ার পর, JavaScript ব্যবহার করে HTML DOM আপডেট করা হয়। আমরা এই ডেটা ব্যবহার করে পেজের বিভিন্ন এলিমেন্ট আপডেট করি, যেমন টেক্সট পরিবর্তন করা, নতুন কন্টেন্ট যোগ করা, বা ডায়নামিকভাবে টেবিল ভিউ আপডেট করা।

document.getElementById("content").innerHTML = data.content;

৬. এরর হ্যান্ডলিং (বিকল্প ধাপ):

Ajax রিকোয়েস্টের সময় কোনো এরর হলে, সেই এররকে হ্যান্ডেল করা জরুরি। আমরা onerror ইভেন্ট ব্যবহার করে এরর হ্যান্ডেল করতে পারি।

xhr.onerror = function() {
    console.error("Request failed.");
};

Ajax এর কাজের ধাপগুলোর সংক্ষেপ:

  1. XMLHttpRequest অবজেক্ট তৈরি করা
  2. রিকোয়েস্ট সেটআপ করা (GET/POST এবং URL)
  3. রিকোয়েস্ট সার্ভারে পাঠানো
  4. সার্ভার রেসপন্স চেক করা এবং প্রসেস করা
  5. DOM আপডেট করা (ডায়নামিক কন্টেন্ট আপডেট)।
  6. এরর হ্যান্ডলিং (যদি প্রয়োজন হয়)

এই ধাপগুলো অনুসরণ করে Ajax এর মাধ্যমে ওয়েব অ্যাপ্লিকেশনকে ডায়নামিক এবং ইন্টারেক্টিভ করা যায়।

XMLHttpRequest হলো Ajax এর একটি মূল উপাদান এবং এটি JavaScript API এর একটি অংশ, যা ওয়েব ব্রাউজার এবং ওয়েব সার্ভারের মধ্যে ডেটা এক্সচেঞ্জ করার জন্য ব্যবহৃত হয়। XMLHttpRequest অবজেক্ট ব্যবহার করে, ওয়েব পেজ সার্ভারের সাথে ডেটা আদান-প্রদান করতে পারে পেজ রিলোড ছাড়াই, যা ডায়নামিক এবং ইন্টারেক্টিভ ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। নিচে XMLHttpRequest এর ভূমিকা এবং এর ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো:

XMLHttpRequest এর ভূমিকা:

১. অ্যাসিনক্রোনাস ডেটা এক্সচেঞ্জ:

  • XMLHttpRequest অবজেক্ট ব্যবহার করে, অ্যাসিনক্রোনাস (অ্যাসিনক) পদ্ধতিতে সার্ভারের সাথে ডেটা আদান-প্রদান করা যায়। এর ফলে, পেজটি রিফ্রেশ করা ছাড়াই ইউজার ইন্টারফেসে ডায়নামিক কন্টেন্ট আপডেট করা যায়।
  • অ্যাসিনক রিকোয়েস্টের মাধ্যমে, সার্ভারের সাথে যোগাযোগ চলাকালীন ওয়েব পেজ রেসপন্সিভ থাকে এবং ইউজাররা তাদের কাজ চালিয়ে যেতে পারে।

২. GET এবং POST রিকোয়েস্ট পরিচালনা:

  • XMLHttpRequest অবজেক্ট ব্যবহার করে আমরা HTTP রিকোয়েস্ট (GET বা POST) পাঠাতে পারি।
  • GET রিকোয়েস্ট সাধারণত ডেটা আনার জন্য ব্যবহৃত হয়, আর POST রিকোয়েস্ট ডেটা পাঠানোর জন্য।

৩. সার্ভার রেসপন্স রিসিভ করা এবং প্রসেস করা:

  • XMLHttpRequest অবজেক্ট ব্যবহার করে আমরা সার্ভার থেকে আসা রেসপন্স রিসিভ করতে পারি এবং সেই রেসপন্সকে প্রসেস করতে পারি।
  • রেসপন্সটি বিভিন্ন ফরম্যাটে (যেমন, JSON, XML, অথবা প্লেইন টেক্সট) হতে পারে, যা JavaScript এর মাধ্যমে সহজেই হ্যান্ডেল করা যায়।

৪. DOM ম্যানিপুলেশন:

  • XMLHttpRequest এর মাধ্যমে প্রাপ্ত ডেটা ব্যবহার করে ওয়েব পেজের HTML DOM আপডেট করা যায়। উদাহরণস্বরূপ, সার্ভার থেকে একটি JSON ডেটা এনে তা HTML টেবিল বা ড্রপডাউন তালিকায় রিয়েল-টাইমে আপডেট করা যায়।

৫. এরর হ্যান্ডলিং:

  • XMLHttpRequest এর মাধ্যমে সার্ভারের সাথে যোগাযোগ করার সময় কোনো সমস্যা হলে (যেমন, নেটওয়ার্ক সমস্যা বা সার্ভার এরর), এরর হ্যান্ডলিং করা যায়। এর মাধ্যমে ইউজারকে সঠিক বার্তা দেখানো বা বিকল্প ব্যবস্থা গ্রহণ করা সম্ভব হয়।

XMLHttpRequest এর কাজের প্রক্রিয়া:

XMLHttpRequest অবজেক্ট তৈরি করে এবং ব্যবহারের প্রক্রিয়া নিচে ব্যাখ্যা করা হলো:

var xhr = new XMLHttpRequest(); // XMLHttpRequest অবজেক্ট তৈরি করা

xhr.open("GET", "https://example.com/api/data", true); // রিকোয়েস্ট সেটআপ করা (GET এবং URL)

xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) { // রিকোয়েস্ট সফল হয়েছে কিনা তা চেক করা
        console.log(xhr.responseText); // রেসপন্স ডেটা কনসোলে দেখানো
    }
};

xhr.send(); // রিকোয়েস্ট পাঠানো
  • xhr.open(method, url, async): এটি রিকোয়েস্টের টাইপ (যেমন GET/POST) এবং সার্ভারের URL নির্ধারণ করে।
  • xhr.send(): এটি রিকোয়েস্ট সার্ভারে পাঠায়।
  • xhr.onreadystatechange: এটি রিকোয়েস্টের অবস্থা পরিবর্তিত হলে একটি ফাংশন কল করে।
  • xhr.responseText: এটি সার্ভার থেকে প্রাপ্ত রেসপন্স ডেটা ধারণ করে।

সারসংক্ষেপ:

  • মূল কাজ: সার্ভারের সাথে অ্যাসিনক্রোনাস ডেটা আদান-প্রদান এবং পেজ রিলোড ছাড়াই পেজ আপডেট করা।
  • HTTP রিকোয়েস্ট পরিচালনা: GET, POST, PUT, DELETE ইত্যাদি রিকোয়েস্ট করা।
  • রেসপন্স ম্যানেজমেন্ট: সার্ভার থেকে আসা ডেটা রিসিভ করে প্রসেস করা এবং UI (User Interface) আপডেট করা।
  • এরর হ্যান্ডলিং: কোনো সমস্যা হলে উপযুক্ত এরর মেসেজ বা বিকল্প অ্যাকশন নেওয়া।

সার্বিকভাবে, XMLHttpRequest Ajax এর একটি প্রধান উপাদান, যা ওয়েব পেজকে ডায়নামিক ও ইন্টারেক্টিভ করে তোলে এবং ইউজার এক্সপেরিয়েন্সকে উন্নত করে।

Asynchronous এবং Synchronous Ajax এর মধ্যে পার্থক্য

Ajax রিকোয়েস্ট দুটি পদ্ধতিতে কাজ করতে পারে: Asynchronous এবং Synchronous। এই দুটি পদ্ধতির মধ্যে মূল পার্থক্য হলো কিভাবে ব্রাউজার সার্ভারের সাথে যোগাযোগ করে এবং কিভাবে রেসপন্সের জন্য অপেক্ষা করে। নিচে Asynchronous এবং Synchronous Ajax এর মধ্যে পার্থক্য ব্যাখ্যা করা হলো:

Asynchronous Ajax:

১. অ্যাসিনক্রোনাস নেচার:

  • Asynchronous পদ্ধতিতে Ajax রিকোয়েস্ট পাঠানোর পর ব্রাউজার সার্ভারের রেসপন্সের জন্য অপেক্ষা করে না। রিকোয়েস্ট পাঠানোর পর ব্রাউজার অন্যান্য কাজ চালিয়ে যায় এবং যখন রেসপন্স পাওয়া যায় তখন একটি ফাংশন (callback function) এক্সিকিউট হয়।

২. ইউজার ইন্টারফেস ফ্রিজ না হওয়া:

  • এই পদ্ধতিতে রিকোয়েস্ট চলাকালীন সময়ে ওয়েব পেজের ইউজার ইন্টারফেস (UI) প্রতিক্রিয়াশীল থাকে, অর্থাৎ ইউজার অন্যান্য কাজ করতে পারে।

৩. ব্যবহার:

  • সাধারণত, ওয়েব ডেভেলপমেন্টে Ajax রিকোয়েস্ট প্রায় সব সময় অ্যাসিনক্রোনাস (asynchronous) হয়, কারণ এটি ইউজারের অভিজ্ঞতা (user experience) উন্নত করে।

৪. কোড উদাহরণ:

var xhr = new XMLHttpRequest();
xhr.open("GET", "data-url.json", true); // true = Asynchronous
xhr.onreadystatechange = function() {
   if (xhr.readyState === 4 && xhr.status === 200) {
       console.log(xhr.responseText); // রেসপন্স ডেটা প্রসেস করা
   }
};
xhr.send();
  • এখানে, true প্যারামিটারটি নির্দেশ করে যে রিকোয়েস্ট অ্যাসিনক্রোনাসভাবে কাজ করবে। এটি পেজের অন্যান্য কাজ চলমান অবস্থায় রিকোয়েস্ট প্রক্রিয়া চালিয়ে যাবে।

৫. প্রসেসিং ইফিশিয়েন্সি:

  • Asynchronous Ajax ওয়েব অ্যাপ্লিকেশনকে আরও দ্রুত এবং স্মুথ করে তোলে কারণ এটি রেসপন্সের জন্য অপেক্ষা না করে অন্যান্য কাজ চালিয়ে যেতে পারে।

Synchronous Ajax:

১. সিঙ্ক্রোনাস নেচার:

  • Synchronous পদ্ধতিতে Ajax রিকোয়েস্ট পাঠানোর পর ব্রাউজার সার্ভারের রেসপন্স না পাওয়া পর্যন্ত অপেক্ষা করে এবং সেই সময়ে অন্য কোনো কাজ করে না। অর্থাৎ, এটি ইউজার ইন্টারফেস ব্লক করে রাখে যতক্ষণ না রেসপন্স আসে।

২. ইউজার ইন্টারফেস ব্লক করা:

  • রেসপন্স পাওয়া না গেলে পেজের UI ফ্রিজ হয়ে যায় এবং ইউজার অন্য কোনো ইন্টারঅ্যাকশন করতে পারে না, যা ইউজার এক্সপেরিয়েন্সকে খারাপ করে দেয়।

৩. ব্যবহার:

  • বর্তমানে ওয়েব ডেভেলপমেন্টে Synchronous Ajax ব্যবহার খুব কমই করা হয়, কারণ এটি অ্যাসিনক্রোনাস পদ্ধতির তুলনায় কম কার্যকরী এবং ইউজার এক্সপেরিয়েন্সে নেতিবাচক প্রভাব ফেলে।

৪. কোড উদাহরণ:

var xhr = new XMLHttpRequest();
xhr.open("GET", "data-url.json", false); // false = Synchronous
xhr.send();
if (xhr.status === 200) {
   console.log(xhr.responseText); // রেসপন্স ডেটা প্রসেস করা
}
  • এখানে, false প্যারামিটারটি নির্দেশ করে যে রিকোয়েস্টটি সিঙ্ক্রোনাসভাবে কাজ করবে। এটি তখন পর্যন্ত অন্য কোনো কাজ করবে না যতক্ষণ না রেসপন্স পাওয়া যায়।

প্রসেসিং ইফিশিয়েন্সি:

  • Synchronous Ajax ব্যবহার করলে ব্রাউজার অপেক্ষা করে এবং অন্যান্য কাজ থামিয়ে রাখে, ফলে পেজের পারফরম্যান্স কমে যায় এবং ইউজার এক্সপেরিয়েন্স ব্যাহত হয়।

Asynchronous এবং Synchronous Ajax এর মধ্যে পার্থক্য:

বৈশিষ্ট্যAsynchronous AjaxSynchronous Ajax
রেসপন্স টাইমরেসপন্স পাওয়ার জন্য ব্রাউজার অপেক্ষা করে না এবং অন্যান্য কাজ চলমান থাকে।রেসপন্স পাওয়া পর্যন্ত ব্রাউজার অপেক্ষা করে এবং অন্য কোনো কাজ করে না।
UI প্রতিক্রিয়াইউজার ইন্টারফেস প্রতিক্রিয়াশীল থাকে এবং ইউজার অন্যান্য কাজ করতে পারে।UI ব্লক হয়ে যায় এবং ইউজার কিছু করতে পারে না।
ব্যবহারিক সুবিধাদ্রুত এবং স্মুথ, ওয়েব অ্যাপ্লিকেশন তৈরিতে বেশি ব্যবহৃত হয়।UI ফ্রিজ করে, ইউজার এক্সপেরিয়েন্স খারাপ করে।
সেটিংtrue প্যারামিটার দিয়ে সেট করা হয়।false প্যারামিটার দিয়ে সেট করা হয়।

সারসংক্ষেপ:

  • Asynchronous Ajax: এটি প্রায় সব সময় ওয়েব ডেভেলপমেন্টে ব্যবহৃত হয়, কারণ এটি দ্রুত এবং ইউজার-ফ্রেন্ডলি।
  • Synchronous Ajax: এটি বিশেষ ক্ষেত্রে ব্যবহৃত হয়, তবে সাধারণত এড়িয়ে যাওয়া হয় কারণ এটি ইউজারের জন্য ইন্টারফেস ব্লক করে।

HTTP Methods: GET এবং POST এর ভূমিকা

HTTP মেথড GET এবং POST হলো Ajax এবং ওয়েব ডেভেলপমেন্টের ক্ষেত্রে সবচেয়ে সাধারণ এবং গুরুত্বপূর্ণ মেথড। এই মেথডগুলো ওয়েব ব্রাউজার এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। Ajax এর মাধ্যমে GET এবং POST মেথড ব্যবহার করে সার্ভারের সাথে ডেটা পাঠানো এবং গ্রহণ করা হয়। নিচে GET এবং POST মেথডের ভূমিকা এবং তাদের মধ্যে পার্থক্য আলোচনা করা হলো:

১. HTTP GET মেথড:

ভূমিকা:

  • GET মেথড মূলত সার্ভার থেকে ডেটা আনার জন্য ব্যবহৃত হয়। এটি যখন ব্রাউজার বা ক্লায়েন্ট থেকে পাঠানো হয়, তখন সার্ভার সেই রিকোয়েস্টের রেসপন্স হিসেবে নির্দিষ্ট ডেটা বা রিসোর্স প্রদান করে।
  • GET মেথড URL এর মাধ্যমে ডেটা পাঠায়, অর্থাৎ ডেটা কুয়েরি স্ট্রিং হিসেবে URL এর অংশে যোগ করা হয়।

বৈশিষ্ট্য:

১. ডেটা পাঠানোর সীমাবদ্ধতা:

  • GET মেথডে URL এর মাধ্যমে ডেটা পাঠানো হয়, তাই এটি সাধারণত ছোট আকারের ডেটার জন্য উপযুক্ত। বেশিরভাগ ব্রাউজারে URL এর দৈর্ঘ্য সীমিত থাকে, তাই বড় ডেটা পাঠানোর জন্য GET মেথড ব্যবহার করা হয় না।

২. ক্যাশিং:

  • GET রিকোয়েস্ট সাধারণত ব্রাউজার দ্বারা ক্যাশ করা হয়, ফলে এটি দ্রুত এক্সেস করা যায়। উদাহরণস্বরূপ, যদি একটি ওয়েব পেজে একটি GET রিকোয়েস্ট করা হয়, তাহলে পরবর্তী সময়ে সেই একই রিকোয়েস্ট দ্রুত লোড হতে পারে কারণ এটি ক্যাশে সংরক্ষিত থাকে।

৩. সুরক্ষার দিক:

  • GET রিকোয়েস্টে URL এর মধ্যে ডেটা পাঠানো হয়, তাই এটি ব্রাউজারে দেখা যায় এবং তা URL হিস্টোরিতে থাকে। সংবেদনশীল বা প্রাইভেট ডেটা পাঠানোর জন্য GET মেথড নিরাপদ নয়।

৪. Idempotent Property:

  • GET মেথড একটি idempotent অপারেশন, অর্থাৎ একই GET রিকোয়েস্ট বারবার করলেও সার্ভারের রিসোর্সে কোনো পরিবর্তন আনে না। এটি শুধুমাত্র ডেটা পড়ার জন্য ব্যবহৃত হয়, পরিবর্তনের জন্য নয়।

উদাহরণ:

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://example.com/api/data?id=123", true);
xhr.send();

২. HTTP POST মেথড:

ভূমিকা:

  • POST মেথড সার্ভারে ডেটা পাঠানোর জন্য ব্যবহৃত হয়, বিশেষ করে যখন ক্লায়েন্টের পক্ষ থেকে সার্ভারে বড় পরিমাণ ডেটা বা সংবেদনশীল ডেটা পাঠাতে হয়। এটি সাধারণত ফর্ম সাবমিশনের ক্ষেত্রে ব্যবহৃত হয়।
  • POST মেথডে ডেটা request body এর মাধ্যমে পাঠানো হয়, যা URL এর বাইরে থাকে, ফলে এটি GET মেথডের তুলনায় বেশি নিরাপদ।

বৈশিষ্ট্য:

১. ডেটা পাঠানোর সীমাবদ্ধতা নেই:

  • POST মেথডে ডেটা request body তে পাঠানো হয়, তাই ডেটার আকারের কোনো সীমাবদ্ধতা নেই এবং এটি বড় ডেটা পাঠানোর জন্য উপযুক্ত।

২. নিরাপত্তা:

  • POST রিকোয়েস্টে ডেটা URL এর পরিবর্তে request body তে পাঠানো হয়, তাই ডেটা URL হিস্টোরিতে সংরক্ষিত হয় না এবং ব্রাউজারে দেখা যায় না। সংবেদনশীল তথ্য পাঠানোর জন্য POST মেথড নিরাপদ।

৩. Idempotent Property:

  • POST মেথড সাধারণত non-idempotent, অর্থাৎ একাধিকবার একই POST রিকোয়েস্ট পাঠালে সার্ভারের ডেটা বা রিসোর্সে পরিবর্তন ঘটতে পারে (যেমন, নতুন ডেটা সংরক্ষণ বা আপডেট করা)।

৪. ক্যাশিং:

  • সাধারণত POST রিকোয়েস্ট ক্যাশ করা হয় না, কারণ এটি পরিবর্তনশীল ডেটার জন্য ব্যবহৃত হয়। প্রতিবার POST রিকোয়েস্ট করলে নতুন রেসপন্স পাওয়া যায়।

উদাহরণ:

var xhr = new XMLHttpRequest();
xhr.open("POST", "https://example.com/api/data", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ name: "John", age: 30 }));

GET এবং POST মেথডের মধ্যে পার্থক্য:

বৈশিষ্ট্যGETPOST
ডেটা পাঠানোর উপায়URL এর কুয়েরি স্ট্রিং হিসেবে পাঠানো হয়।request body এর মাধ্যমে পাঠানো হয়।
ডেটার আকারের সীমাবদ্ধতাসাধারণত সীমিত (URL দৈর্ঘ্য অনুযায়ী)।বড় আকারের ডেটা পাঠানো সম্ভব।
নিরাপত্তাকম নিরাপদ (URL এ দেখা যায়)।বেশি নিরাপদ (ডেটা request body এ থাকে)।
ক্যাশিংব্রাউজার ক্যাশ করতে পারে।সাধারণত ক্যাশ করা হয় না।
Idempotent Propertyহ্যাঁ (একই রিকোয়েস্ট বারবার করলে ফলাফল একই)।না (একাধিকবার রিকোয়েস্ট করলে ফলাফল পরিবর্তিত হতে পারে)।

সারসংক্ষেপ:

  • GET মেথড: সাধারণত ডেটা রিড করার জন্য ব্যবহৃত হয়, যেখানে URL এর মাধ্যমে ছোট ডেটা পাঠানো হয় এবং এটি ক্যাশ করা যায়।
  • POST মেথড: ডেটা সার্ভারে পাঠানোর জন্য ব্যবহৃত হয়, বিশেষ করে যখন বড় আকারের ডেটা বা সংবেদনশীল তথ্য পাঠাতে হয়। এটি বেশি নিরাপদ এবং সাধারণত ক্যাশ করা হয় না।

আরও দেখুন...

Promotion